package com.ftcs.controller.common.service;

import com.ftcs.controller.common.request.*;
import com.ftcs.model.FinishedInstanceDTO;
import com.ftcs.model.RunningProcess;
import com.ftcs.model.TodoTaskDTO;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;

import java.util.List;

public interface ActivitiService {
    /**
     * 创建流程实例
     *
     * @param request
     * @return
     */
    String startWorkFlow(StartWorkFlowRequest request);

    /**
     * 提交任务
     *
     * @param request
     */
    void submitTask(Submit2NextRequest request);

    void revokeTask(String taskId);

    /**
     * 查询待办任务列表
     *
     * @param request
     * @return
     */
    TodoTaskDTO listTodoTasks(TodoTasksRequest request);

    /**
     * 查询已办任务列表
     *
     * @param request
     * @return
     */
    List<Task> listFinishedTasks(TodoTasksRequest request);


    /**
     * 获取任务的业务主键
     *
     * @param taskId
     * @return
     */
    String getBusinessKeyByTaskId(String taskId);


    /**
     * 查询流程追踪
     */
    void getTraceImage();

    /**
     * 查询指定用户发起的业务流程实例列表
     */
    List<RunningProcess> listLaunchedProcessInstances();

    /**
     * 查询我正在参与的流程实例列表，结合业务可以扩展为我发起的流程实例
     */
    List<RunningProcess> listInvolvingProcessInstances(InvovedProcessInstanceRequest request);

    /**
     * 获取我的已结束历史流程列表
     *
     * @param request
     * @return
     */
    FinishedInstanceDTO listFinishedProcessInstances(FinishedTasksRequest request);
}
